{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-12-04T03:07:03.533042Z",
     "start_time": "2018-12-04T03:07:00.011967Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from numpy import *\n",
    "import random\n",
    "import matplotlib.pyplot as plt\n",
    "#加在数据集\n",
    "def loadDataSet():\n",
    "    dataMat = []\n",
    "    labelMat = []\n",
    "    fr = open('testSet.txt')\n",
    "    for line in fr.readlines():\n",
    "        lineArr = line.strip().split()\n",
    "        #为了便于截距b的计算，在数据集首尾加了一项1.0\n",
    "        dataMat.append([1.0, float(lineArr[0]), float(lineArr[1])])\n",
    "        labelMat.append(int(lineArr[2]))\n",
    "    return dataMat, labelMat\n",
    "\n",
    "#sigmoid函数\n",
    "def sigmoid(inX):\n",
    "    return 1.0/(1+exp(-inX))\n",
    "\n",
    "#梯度上升\n",
    "def gradAscent(dataMatIn, classLabels):\n",
    "    dataMatrix = mat(dataMatIn)\n",
    "    labelMat = mat(classLabels).transpose()\n",
    "    m,n = shape(dataMatrix)\n",
    "    alpha = 0.001#移动步长，学习率\n",
    "    maxCircles = 150#迭代次数\n",
    "    weights = ones((n,1))\n",
    "    for k in range(maxCircles):\n",
    "        h = sigmoid(dataMatrix*weights)\n",
    "        #该处推导见博文\n",
    "        error = labelMat-h\n",
    "        weights = weights + alpha*dataMatrix.transpose()*error\n",
    "    return weights\n",
    "\n",
    "#随机梯度上升基本函数\n",
    "def stoGradAscent0(dataMatrix,classLabels, numIter=150):\n",
    "    m,n = shape(dataMatrix)\n",
    "    alpha = 0.001\n",
    "    weights = ones(n)\n",
    "    for _ in range(numIter):\n",
    "        for i in range(m):\n",
    "            h = sigmoid(sum(dataMatrix[i]*weights))\n",
    "            error = classLabels[i] - h\n",
    "            weights = weights + alpha*error*dataMatrix[i]\n",
    "    return weights\n",
    "\n",
    "#随机梯度上升改进函数\n",
    "#共3处改进：多轮随机梯度下降，每次更新权重是在随机选取的样本电上，步长alpha随着训练的进行逐渐减小（开始时较大）。（即自适应学习率）\n",
    "def stoGradAscent1(dataMatrix, classLabels, numIter=150):\n",
    "    m, n = shape(dataMatrix)\n",
    "    weights = ones(n)\n",
    "    for j in range(numIter):\n",
    "        for i in range(m):\n",
    "            alpha = 4/(1.0+i+j) + 0.01\n",
    "            #随机选取计算梯度使用的样本点\n",
    "            randIndex = random.randint(0,m-1)\n",
    "            h = sigmoid(sum(dataMatrix[randIndex]*weights))\n",
    "            error = classLabels[randIndex] - h\n",
    "            weights = weights + alpha*error*dataMatrix[randIndex]\n",
    "    return weights\n",
    "\n",
    "#可视化分类效果：画出决策边界\n",
    "def plotBestFit(weights):\n",
    "    import matplotlib.pyplot as plt\n",
    "    dataMat,labelMat=loadDataSet()\n",
    "    dataArr = array(dataMat)\n",
    "    n = shape(dataArr)[0] \n",
    "    xcord1 = []; ycord1 = []\n",
    "    xcord2 = []; ycord2 = []\n",
    "    for i in range(n):\n",
    "        if int(labelMat[i])== 1:\n",
    "            xcord1.append(dataArr[i,1]); ycord1.append(dataArr[i,2])\n",
    "        else:\n",
    "            xcord2.append(dataArr[i,1]); ycord2.append(dataArr[i,2])\n",
    "    fig = plt.figure()\n",
    "    ax = fig.add_subplot(111)\n",
    "    ax.scatter(xcord1, ycord1, s=30, c='red', marker='s')\n",
    "    ax.scatter(xcord2, ycord2, s=30, c='green')\n",
    "    x = arange(-3.0, 3.0, 0.1)\n",
    "    y = (-weights[0]-weights[1]*x)/weights[2]\n",
    "    ax.plot(x, y)\n",
    "    plt.xlabel('X1'); plt.ylabel('X2');\n",
    "    plt.show()\n",
    "\n",
    "#测试不同优化算法所得到的分类器分类效果\n",
    "dataArr, labelMat = loadDataSet()\n",
    "weights0 = gradAscent(dataArr, labelMat)\n",
    "plotBestFit(weights0.getA())\n",
    "weights1 = stoGradAscent0(array(dataArr), labelMat)\n",
    "plotBestFit(weights1)\n",
    "weights2 = stoGradAscent1(array(dataArr), labelMat)\n",
    "plotBestFit(weights2)\n",
    "            "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-12-04T03:40:31.249594Z",
     "start_time": "2018-12-04T03:37:43.429916Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:18: RuntimeWarning: overflow encountered in exp\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "the error rate of this test is: 0.268657\n",
      "the error rate of this test is: 0.567164\n",
      "the error rate of this test is: 0.358209\n",
      "the error rate of this test is: 0.388060\n",
      "the error rate of this test is: 0.388060\n",
      "the error rate of this test is: 0.283582\n",
      "the error rate of this test is: 0.268657\n",
      "the error rate of this test is: 0.283582\n",
      "the error rate of this test is: 0.253731\n",
      "the error rate of this test is: 0.283582\n",
      "after 10 iterations the average error rate is: 0.334328\n"
     ]
    }
   ],
   "source": [
    "#预测病马的死亡率\n",
    "#分类\n",
    "def classifyVector(inX, weights):\n",
    "    prob = sigmoid(sum(inX*weights))\n",
    "    if prob > 0.5:\n",
    "        return 1.0\n",
    "    else:\n",
    "        return 0.0\n",
    "    \n",
    "def colicTest():\n",
    "    frTrain = open('horseColicTraining.txt'); frTest = open('horseColicTest.txt')\n",
    "    trainingSet = []; trainingLabels = []\n",
    "    for line in frTrain.readlines():\n",
    "        currLine = line.strip().split('\\t')\n",
    "        lineArr =[]\n",
    "        for i in range(21):\n",
    "            lineArr.append(float(currLine[i]))\n",
    "        trainingSet.append(lineArr)\n",
    "        trainingLabels.append(float(currLine[21]))\n",
    "    trainWeights = stoGradAscent1(array(trainingSet), trainingLabels, 1000)\n",
    "    errorCount = 0; numTestVec = 0.0\n",
    "    for line in frTest.readlines():\n",
    "        numTestVec += 1.0\n",
    "        currLine = line.strip().split('\\t')\n",
    "        lineArr =[]\n",
    "        for i in range(21):\n",
    "            lineArr.append(float(currLine[i]))\n",
    "        if int(classifyVector(array(lineArr), trainWeights))!= int(currLine[21]):\n",
    "            errorCount += 1\n",
    "    errorRate = (float(errorCount)/numTestVec)\n",
    "    print (\"the error rate of this test is: %f\" % errorRate)\n",
    "    return errorRate\n",
    "\n",
    "def multiTest():\n",
    "    numTests = 10; errorSum=0.0\n",
    "    for k in range(numTests):\n",
    "        errorSum += colicTest()\n",
    "    print (\"after %d iterations the average error rate is: %f\" % (numTests, errorSum/float(numTests)))\n",
    "\n",
    "multiTest()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.5"
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
